import { createApp } from 'vue'
import App from './App.vue'
import router from './router'
import store from "./store";

import ViewUIPlus from 'view-ui-plus'
import 'view-ui-plus/dist/styles/viewuiplus.css'

// 导入管理所有接口的对象
import API from './api' ;
import RSS from './api/rssIndex.js'
import Message from "./message";

const app = createApp(App)

// 将 API 挂载到 vue的全局配置中
app.config.globalProperties.$api = API ;
app.config.globalProperties.$rss = RSS ;
app.config.globalProperties.$tips = Message

// v-auth:func:add  默认 实现 按钮 禁用 或 启用
// v-auth.func:add  默认实现 显示/隐藏 效果

// 定义一个全局指令，用来控制按钮权限
app.directive("auth" , {
    mounted(el, binding, vnode, prevVnode) {
       // 获取 arg
      let remark = binding.arg ;
      if (remark != null && remark != "") {
          // 获取 当前登录的用户的 权限列表
          let authorities =  store.state.authorities ;
          // 过滤，并查找 按钮权限 为  remark 的按钮是否存在
          let auth = authorities.filter(auth => auth.level === 4).find(auth => auth.authority === remark)
          el.disabled = auth == null ;
          return ;
      }
      let modifier = Object.keys(binding.modifiers)[0] ;
      if (modifier != null) {
          // 获取 当前登录的用户的 权限列表
          let authorities =  store.state.authorities ;
          // 过滤，并查找 按钮权限 为  remark 的按钮是否存在
          let auth = authorities.filter(auth => auth.level === 4).find(auth => auth.authority === modifier);
          if (auth == null) el.remove();
          return ;
      }
      throw new Error("v-auth 指令 必须提供 修饰符 或者 参数") ;
   },
})


app.use(router)
    .use(store)
    .use(ViewUIPlus)
app.mount('#app')
